//
//  协议.h
//  面试题
//
//  Created by Toj on 8/18/21.
//

#pragma mark - 协议定义
协议: 规定好的一套规则

#pragma mark - 协议族
UDP协议: 用户数据协议,
TCP协议: 传输控制协议
HTTP:  超文本传输协议
HTTPS: HTTP + SSL
FTP :  文件传输协议
POP3:  邮件协议

#pragma mark - UDP协议
流媒体用的多, 会对一帧拼接多个包 在64k内发送, 如果卡顿会出现马赛克
游戏也是UDP, 卡顿在恢复卡到你最后一帧

#pragma mark - 传输控制协议
面向连接可靠控制的传输协议, 连接 + 控制
** 接收到了请求, 就得恢复一个
1. 传输的控制
控制连接发送的每个包
大文件下载: 需要建立连接, 保证文件的完整性

2 控制连接 -> TPC连接
2.1 TPC连接: 3次握手, 开辟资源
2.1.1 C -> S, 发送一个SYN
2.1.2 S -> C, 发送一个SYN + ACK
      S接到说明C的O没问题, S的I没问题
2.1.3 C -> S, 发送一个ACK.
      C接到SYN + ACK, 说明C的IO没问题, S的IO也没问题
      但是无法S不知道自己的O有没有问题, 所以还需要给S发送一个ACK
C & S 都没问题这样就可以传输数据了

2.2. TPC断开连接: 4次握手
2.2.1 C -> S, FIN, 我结束了, 我要断开了
2.2.2 S -> C, FIN, ACK, 确认
2.2.3 S -> C, FIN, 我也要断开了
2.2.4 C -> S, FIN, ACK 断开确认

TCP协议 链接 3次握手
C: 发送一个连接请求SYN
S: 知道了ACK, 也发送一个连接请求SYN
C: 知道了ACK

TCP协议 断开连接4次握手
C: 我完事了(FIN)
S: 知道了(ACK).
他只是告诉C我知道了, 但是C 不知道S 是否响应完, 所以还需要等待S完事->FIN
S: 我也完了(FIN)
C: 知道了(ACK).

双方是谁:
https: 服务器 <--> 客户端 双方协议一致
头 + 体

头:
体的长度
版本
数据格式
